home *** CD-ROM | disk | FTP | other *** search
/ Gekkan Dennou Club 145 / Gekkan Dennou Club - 2000.6 Vol. 145 (Japan).7z / Gekkan Dennou Club - 2000.6 Vol. 145 (Japan) (Track 1).bin / games / spassion / source.lzh / SOURCE / ENEMY.H < prev    next >
Text File  |  2000-03-29  |  4KB  |  163 lines

  1. #ifndef ENE_X
  2. /* signed int の座標値から固定小数部(上位16bit)を取り出すマクロ */
  3. #define ENE_X (*((short *) (&ene->lx)))
  4. #define ENE_Y (*((short *) (&ene->ly)))
  5. #define ENE_VX (*((short *) (&ene->vx)))
  6. #define ENE_VY (*((short *) (&ene->vy)))
  7. #endif
  8.  
  9. typedef struct ENEMY{
  10.     signed short x, y;                /* 座標 */
  11.     short    pt;                        /* スプライトパターンNo. */
  12.     short    info;                    /* 反転コード・色・優先度を表わすデータ */
  13.     signed int lx, ly;                /* 32bit X,Y 座標 ( l = longword ) */
  14.     signed int vx, vy;                /* 速度 */
  15.     HIT_XY4    *hit_p[10];                /* 対プレイヤー当たり判定 */
  16.     HIT_XY4    *hit_o[10];                /* 対オプション当たり判定(全体) */
  17.     HIT_XY4    *hit_s[10];                /* 対ショット当たり判定(全体) */
  18.  
  19.     short    type;                    /* 種類 */
  20.     short    hp;                        /* 耐久力 */
  21.     short    arg;                    /* 予備の引き数 */
  22.     short    damage;                    /* ダメージを受けた */
  23.     short    damage_kind;            /* ダメージの種類 */
  24.     short    no_dead;                /* 当たったときにプレイヤーが死ぬか(0だと死ぬ) */
  25.  
  26.     short    count;                    /* 出現してからの時間 */
  27.     short    dead_count;                /* 死んでからの時間 */
  28.     short    flush_count;            /* フラッシュ用カウント */
  29.     short    anim_count;                /* アニメーションカウント */
  30.  
  31.     short    state;                    /* 動き制御用 */
  32.     short    angle;                    /* 方向 */
  33.     short    flg;                    /* etc */
  34.  
  35.     short    point;                    /* 点数 */
  36.  
  37.     short (*func_enemy_move)(struct ENEMY *);    /* 移動関数へのポインタ */
  38.     struct PLAYER *player;            /* プレイヤーへのポインタ */
  39.  
  40.  
  41.     short work;        /* ワーク */
  42.     short work2;
  43.     short work3;
  44.     short work4;
  45.     char cwork;        /* ワーク(char) */
  46.     char cwork2;
  47.     char cwork3;
  48.     char cwork4;
  49.     char cwork5;
  50.     short m_work;        /* 移動用ワーク */
  51.     short m_work2;
  52.     short m_work3;
  53.     short m_work4;
  54.     short s_work;        /* ショット用ワーク */
  55.     short s_work2;
  56.     short s_work3;
  57.     short s_work4;
  58.  
  59.  
  60.     /* 移動用ワーク(SubMoveTo() 用) */
  61.     signed int move_ax, move_ay;    /* 加速度 */
  62.     unsigned short move_seq;/* 加速中、等速度運動中、減速中 */
  63.     signed short move_count;/* 加速度を何回足すか */
  64.     signed short move_count2;    /* 一定速度で進む回数 */
  65.     signed short move_count3;    /* 実際に加速した回数 */
  66.     signed short move_counter;    /* 何回足すか数える */
  67.  
  68.  
  69.     /* コア関係のワーク */
  70.     signed short core_x, core_y;    /* コア座標 */
  71.     short core_pt;        /* スプライトパターンNo. */
  72.     short core_info;    /* 反転コード・色・優先度を表わすデータ */
  73.  
  74.  
  75.     /* パーツ関係のワーク */
  76.     struct ENEMY *parts1;    /* パーツへのポインタ */
  77.     struct ENEMY *parts2;
  78.     struct ENEMY *parts3;
  79.     struct ENEMY *parts4;
  80.     short parts1_work;    /* ワーク */
  81.     short parts1_work2;
  82.     short parts2_work;
  83.     short parts2_work2;
  84.     short parts3_work;
  85.     short parts3_work2;
  86.  
  87.     /* キャラクター間通信用ワーク */
  88.     struct ENEMY *parent;            /* 親オブジェクト */
  89.     struct ENEMY *child;            /* 子オブジェクト */
  90.     unsigned char child_kill;        /* 親が子を殺す時(親が設定) */
  91.     unsigned char child_death;        /* 子が死んだことを親に知らせる(子が設定) */
  92.  
  93.     struct ENEMY *next, *pre;        /* リスト構造用 */
  94. }ENEMY;
  95.  
  96.  
  97. /*
  98.  *        敵情報構造体
  99.  */
  100.  
  101. typedef struct _ENEINFO{
  102.     short    hp;                        /* 硬さ */
  103.     short    points;                    /* 得点 */
  104.     short    pt;                        /* スプライト番号 */
  105.     short    info;                    /* パレット、反転、プライオリティ情報 */
  106.     short    pt_info;                /* 回転するか */
  107.     short rx, ry;                    /* 当たり判定の大きさ */
  108.     short (*func_enemy_move)( struct ENEMY * );    /* 動き用の関数 */
  109.     short (*move_expl)( struct ENEMY * );    /* 爆発時の関数 */
  110.     int        crash_sdno;                /* 破壊されたときの音番号 */
  111. }ENEINFO;
  112.  
  113.  
  114. void    InitEnemy( void );
  115. void    MoveEnemy( void );
  116. ENEMY    *MakeEnemy(short, signed short, signed short, short, struct ENEMY *);
  117. ENEMY    *AllocEnemy( void );
  118. ENEMY    *EraseEnemy( ENEMY *ene );
  119.  
  120. enum {
  121.     PLAYER_ATTACK=1,
  122.     OPTION_ATTACK,
  123.     SHOT_ATTACK,
  124. };
  125.  
  126. enum {
  127.     ENEMY_ZAKO00=0,
  128.     ENEMY_ZAKO01,
  129.     ENEMY_ZAKO02,
  130.     ENEMY_ZAKO03,
  131.     ENEMY_ZAKO04,
  132.     ENEMY_ZAKO05,
  133.     ENEMY_HATCH,
  134.     ENEMY_BATTERY,
  135.     ENEMY_VOLCANO,
  136.     ENEMY_ROCK,
  137.     ENEMY_MINE,
  138.     ENEMY_CRYSTAL_L,
  139.     ENEMY_CRYSTAL_M,
  140.     ENEMY_CRYSTAL,
  141.     ENEMY_BUBBLE_L,
  142.     ENEMY_BUBBLE,
  143.     ENEMY_BRAIN,
  144.     ENEMY_BOSS_M00,
  145.     ENEMY_BOSS_M01,
  146.     ENEMY_DRAGON,
  147.     ENEMY_DRAGON_BODY,
  148.     ENEMY_BOSS01,
  149.     ENEMY_BOSS02,
  150.     ENEMY_BOSS03,
  151.     ENEMY_BOSS04,
  152.     ENEMY_LBOSS,
  153.     ENEMY_BOSSARM,
  154.     ENEMY_BOSSARM1,
  155.     ENEMY_CORE,
  156.     ENEMY_SHIELD,
  157.     ENEMY_LCORE,
  158.     ENEMY_LBATTERY1,
  159.     ENEMY_LBATTERY2,
  160.     ENEMY_LBATTERY3,
  161.     ITEM,
  162. };
  163.